package com.designPattern.p01singleton;

/**
 * @program: 单例模式之懒汉模式（线程安全）--静态内部类
 * @author: luhd
 * @create: 2021-08-24
 */
public class ELanhanSafeInnerClass {
    // 静态内部类
    // 只有显示通过调用getInstance方法时，才会显示装载LazyHolder 类，从而实例化instance
    private static class LazyHolder{
        private static ELanhanSafeInnerClass instance = new ELanhanSafeInnerClass();
    }
    // 私有的构造方法
    private ELanhanSafeInnerClass(){}
    // 获取实例的getInstance方法
    public static ELanhanSafeInnerClass getInstance(){
        return LazyHolder.instance;
    }

    /**
     * 因为饿汉式单例类加载时instance就会被实例化（没有达到lazy loading效果），
     * 而这种方式是Singleton类被装载了，instance不一定被初始化。
     * 因为LazyHolder 类没有被主动使用，只有显示通过调用getInstance方法时，才会显示装载LazyHolder 类，从而实例化instance。
     * 想象一下，如果实例化instance很消耗资源，我想让他延迟加载，这种办法比较好。
     */
}
